/**
 * Hoja de trabajo 1 - Radio
 * 
 * El programa simula el funcionamiento del un radio a través de la 
 * implementación de una interfaz IRadio la cual fue desarrollada
 * en clase. 
 * 
 * El estado del raido es encendido / apagado y puede ser usado para
 * sintonizar AM o FM. Se tienen 12 botones para guardar las emisoras
 * sintonizadas las cuales permiten seleccionar. Las frecuencias AM
 * se representan por múltiplos de 10 en el rango 530 a 1610. Las
 * frecuencias FM se encuentran en el rango de 87.9 a 107.9 en múltiplos
 * de 0.2
 * 
 * Autor: Esteban Ortiz
 * Fecha: 2010-07-19
 */
package gui;

import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JPanel;
import javax.swing.JTextField;

import actions.*;


/**
 * Clase con las acciones y panel para desplegar las emisoras seleccionadas.
 */
public class PanelDisplay extends JPanel {

	// -----------------------------------------------------------------
	// Constantes
	// -----------------------------------------------------------------

	/**
	 * Constante predeterminada para la serialización
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Tamaño de letra del cuadro de texto donde se muestran las estaciones de
	 * radio.
	 */
	private static final Font BIGGER_FONT = new Font("monospaced", Font.PLAIN, 60);
	
	// -----------------------------------------------------------------
	// Atributos
	// -----------------------------------------------------------------

	/**
	 * Clase principal del modelo del mundo.
	 */
	// private MiRadio radio = new MiRadio();;

	// -----------------------------------------------------------------
	// Atributos de la Interfaz
	// -----------------------------------------------------------------

	/**
	 * Cuadro de texto donde se muestran las emisoras elegidas.
	 */
	private static JTextField txtDisplay;

	// -----------------------------------------------------------------
	// Consructor
	// -----------------------------------------------------------------

	/**
	 * Construye el cuadro de texto con las propiedades para desplegar las
	 * emisoras.
	 */
	public PanelDisplay() {
		
		// Distribución de los componentes en el panel
		setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.fill = GridBagConstraints.BOTH;
		
		// Cuadro de texto donde se despliegan los números.
		txtDisplay = new JTextField();
		txtDisplay.setEnabled(false);
		txtDisplay.setFont(BIGGER_FONT);
		c.gridx = 0;
		c.gridy = 0;
		c.gridwidth = 6;
		c.gridheight = 2;
		add(txtDisplay, c);
	}

	// -----------------------------------------------------------------
	// Métodos
	// -----------------------------------------------------------------

	/**
	 * Actualiza el display con la información de la emisora sintonizada.
	 */
	protected static void actualizarTexto(boolean esPreset, int boton) {
		String emisora;
		String frecuencia = Main.radio.darFrecuencia().toUpperCase();

		// Despliega la freciencia FM con un dígito decimal y AM sin ninguno.
		if (frecuencia.equals("FM"))
			emisora = Float.toString(Main.radio.darEmisora());
		else
			emisora = Integer.toString((int) Main.radio.darEmisora());
		
		// Despliega la emisora y frecuencia en el display.
		if (Main.radio.estaEncendido())
			if (esPreset)
				txtDisplay.setText(frecuencia + " " + emisora + "  P" + boton);
			else
				txtDisplay.setText(frecuencia + " " + emisora);
		else
			txtDisplay.setText("");
	}
}
